// 文章分类管理页面-categories js文件

// 加载分类列表
$.ajax({
    type: 'get',
    url: '/categories',
    success: res => {
        // 渲染分类列表
        let html = template('tpl-articleCategory', { data: res });
        $('#categoryBox').html(html);
    }
});

// 添加分类表单提交事件
$('#categoryFormBox').on('submit', '#addCategoryForm', function () {
    // 验证表单合法性
    if (checkCategoryForm()) {
        // 向服务器发送添加文章分类请求
        let params = $(this).serialize();
        $.ajax({
            type: 'post',
            url: '/categories',
            data: params,
            success: res => location.reload(),
            error: err => alert('添加分类失败')
        });
    }

    // 阻止表单提交
    return false;
});

// 删除分类按钮被点击
$('#categoryBox').on('click', '.delete', function () {
    // 获取删除分类的id
    let id = $(this).attr('data-id');
    // 根据分类id删除分类
    if (confirm('您确定要删除这个分类吗？')) deleteCategory(id);
});

// 修改分类按钮被点击
$('#categoryBox').on('click', '.update', function () {
    // 获取修改分类的id
    let id = $(this).attr('data-id');
    // 根据分类id查询分类
    $.ajax({
        type: 'get',
        url: `/categories/${id}`,
        success: res => {
            // 渲染修改分类表单
            let html = template('tpl-updateCategoryForm', { data: res });
            $('#categoryFormBox').html(html);
        },
        error: err => alert('查询分类失败！')
    });
})

// 修改文章分类表单提交事件
$('#categoryFormBox').on('submit', '#updateCategoryForm', function () {
    // 获取修改表单的id
    let id = $(this).attr('data-id');
    // 验证表单合法性
    if (checkCategoryForm()) {
        // 向服务器发送修改分类请求
        $.ajax({
            type: 'put',
            url: '/categories/' + id,
            data: $(this).serialize(),
            success: res => location.reload(),
            error: err => alert('修改分类失败！')
        });
    }

    // 阻止表单提交
    return false;
});

// 全选复选框改变事件
$('#selectAll').on('change', function () {
    let state = $(this).prop('checked');
    // 修改分类列表复选框的选中状态
    $('.category-list').prop('checked', state);
});

// 批量删除按钮被点击事件
$('#deleteManey').on('click', function () {
    if (confirm('您确定要删除这些分类吗？')) {
        // 获取选中状态的复选框
        let array = $('.category-list').filter(':checked');
        if(array.length == 0) return alert('当前没有选择要删除的分类！');
        let id = '';
        // 拼接选中复选框的id
        array.each((index, item) => id = index == 0 ? id + $(item).attr('data-id') : id + '-' + $(item).attr('data-id'));
        // 删除分类
        deleteCategory(id);
    }
});

/**
 * 添加分类或者修改分类表单的合法性
 */
function checkCategoryForm() {
    // 获取输入的分类标题
    let title = $('#title').val();
    // 获取输入的分类类名
    let className = $('#className').val();
    // 若用户没有输入内容则提示
    if (title.length == 0) {
        alert('请输入分类标题！');
        return false;
    }
    else if (className.length == 0) {
        alert('请输入分类类名！');
        return false;
    }
    return true;
}

/**
 * 删除分类
 * @param {要删除的分类的id，如需删除多个分类，通过-连接多个id（id-id-id）} id 
 */
function deleteCategory(id) {
    $.ajax({
        type: 'delete',
        url: '/categories/' + id,
        success: res => location.reload(),
        error: err => alert('删除分类失败！')
    });
}
